Silicon
A realtime platform for creating interactive media.
Silicon.cpp
Go to the documentation of this file.
1// BSD 2-Clause License
2//
3// Copyright (c) 2022, Matthew McCall
4// All rights reserved.
5//
6// Redistribution and use in source and binary forms, with or without
7// modification, are permitted provided that the following conditions are met:
8//
9// 1. Redistributions of source code must retain the above copyright notice, this
10// list of conditions and the following disclaimer.
11//
12// 2. Redistributions in binary form must reproduce the above copyright notice,
13// this list of conditions and the following disclaimer in the documentation
14// and/or other materials provided with the distribution.
15//
16// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
20// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27#include <utility>
28
29#include "boost/assert.hpp"
30
32#include "Silicon/Log.hpp"
33#include "Silicon/Silicon.hpp"
34
35#include "Modules.hpp"
36
37namespace {
38
39std::function<bool()> s_loop;
40
41}
42
43namespace Si {
44
46{
47 if (!Si::AddLocalizationFile(Locale::en_US, "localizations/Silicon_en_US.plist"))
48 {
49 return false;
50 }
51
53
54 Engine::Debug(Si::GetLocalized("Welcome to Silicon Engine!"));
55
56 return true;
57}
58
60{
61 Engine::Debug(Si::GetLocalized("Shutting down Silicon Engine..."));
62}
63
64void SetLoop(std::function<bool()> loop)
65{
66 s_loop = std::move(loop);
67}
68
69bool Loop()
70{
71 BOOST_ASSERT_MSG(s_loop, Si::GetLocalized("Loop function not defined! Make sure you set one with Si::SetLoop()").c_str());
72
73 return s_loop();
74}
75} // namespace Engine
void Debug(Args &&... args)
Definition: Log.hpp:91
Definition: Allocator.hpp:36
bool Initialize()
Definition: Silicon.cpp:45
std::string GetLocalized(const std::string &key)
void SetLocale(Locale locale)
void Deinitialize()
Definition: Silicon.cpp:59
bool Loop()
Definition: Silicon.cpp:69
void SetLoop(std::function< bool()> loop)
Definition: Silicon.cpp:64
bool AddLocalizationFile(Locale locale, const std::string &filename)